// ==UserScript==
// @name            网易BUFF价格比例(找挂刀)插件
// @icon            https://s1.ax1x.com/2022/03/25/qt3mcj.png
// @description     找挂刀，看比例，挑玄学
// @version         3.0.0
// @note            更新于 2022年10月28日21:10:11
// @author          Pronax
// @homepageURL     https://greasyfork.org/zh-CN/users/412840-newell-gabe-l
// @license         AGPL-3.0
// @copyright       2021, Pronax
// @include         /https:\/\/buff\.163\.com\/(market|goods)\/(csgo|dota2|rust|h1z1|tf2|pubg|pubg_recycle|\d+)/
// @run-at          document-body
// @grant           GM_info
// @grant           GM_addStyle
// @grant           GM_setValue
// @grant           GM_getValue
// @grant           GM_xmlhttpRequest
// @grant           GM_registerMenuCommand
// @require         https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery-toast-plugin/1.3.2/jquery.toast.min.js
// @connect         steamcommunity.com
// @connect         buffyouhou.web3v.vip
// @namespace       https://greasyfork.org/zh-CN/users/412840-newell-gabe-l
// ==/UserScript==


(function () {
    /*
        修改思路:
            1、页面操作使用代理来实现同步
            2、全局变量要在显眼的地方注册
            3、复杂的页面逻辑一律使用代理服务器存储（可以添加到 UserScript 的 @require 里提前加载 然后由本页面将其添加到document里）
            4、。。。
    */

    // 本插件基于 steam买 buff卖 为基础
    'use strict';

    // 防止脚本重复执行导致冲突
    if ($(".logo").hasClass("buffHelperLoaded")) { return; }
    $(".logo").addClass("buffHelperLoaded");

    // 作用于 info函数 用于输出debug信息
    var debugflag = true;
    debugflag = false;

    // 全局（插件环境）异常捕获
    window.onerror = function (e) {
        try {
            // e.returnValue = false;       值为false时不会触发console.error事件
            if (!e.error) { return; }     // 通常是浏览器内各种原因导致的报错
            let scriptName = undefined;
            // let errorType = undefined;   也许可以用来区分scriptManager，但是现在用不上
            let renderingEngine = window.navigator.userAgent.match(/(Chrome|Firefox)\/([^ ]*)/);
            let lineno = e.lineno;
            switch (renderingEngine && renderingEngine[1]) {
                case "Chrome":
                    // chrome+TamperMonkey在这个脚本内报错的情况下会需要两次decode
                    scriptName = decodeURIComponent(decodeURIComponent(e.filename.match(/([^\/=]*)\.user\.js/)[1]));
                    lineno -= 534;
                    // errorType = e.message.match(/^Uncaught ([a-zA-Z]*): /)[1];
                    break;
                case "Firefox":
                    scriptName = decodeURIComponent(e.error.stack.match(/\/([^\/]*)\.user\.js/)[1]).trim();
                    lineno -= 1;
                    // errorType = e.message.match(/^([a-zA-Z]*): /)[1];
                    break;
                default:
                    return;
            }
            if (scriptName == "网易BUFF价格比例(找挂刀)插件") {
                let colno = e.colno;
                let errorMsg = e.error.message;
                let msgBody = `内核：${renderingEngine[0]}<br/>版本：${GM_info.script.version}<br/>区域：${helper_config.steamCurrency} ${steamConnection ? 200 : steamConnection == undefined ? "Unknow" : 404}<br/>位置：${lineno}:${colno}<br/>信息：${errorMsg}<br/>路径：${location.pathname}<br/>哈希：${location.hash}`;
                let msgHtml = `恭喜！你可能发现了一个bug<hr/>${msgBody}<hr/>点击下面的链接可以直接进行反馈<br/><a href='mailto:funkyturkey@yeah.net?subject=【${GM_info.script.version}】${lineno}:${colno} ${errorMsg}&body=${encodeURIComponent(msgBody.replaceAll("<br/>", "\r\n"))}'>邮件反馈</a><a href="https://greasyfork.org/zh-CN/scripts/410137/feedback#post-discussion" target="_blank">反馈贴反馈</a>`;
                showMessage("出现了意料之外的错误", msgHtml, "error", false);
            } else {
                console.log(`插件名称：${scriptName}\n代码位置：${e.lineno}:${e.colno}\n错误信息：${e.message}`);
            }
        } catch {
            console.warn("unhandled 捕获了一个错误：", e);
        }
    }

    // 脚本的逻辑封装在异步函数里执行
    (async function () {
        'use strict';

        
    })();
})();